/*
Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.
*/

class Solution {
public:
    int romanToInt(string s) {
        int nSize = s.size();
        int pre = 1001;
        int cur, result = 0;
        for (int i = 0; i < nSize; ++i){
            cur = map(s[i]);
            result += cur;
            if (cur > pre)result -= 2*pre; pre = cur;
        }
        return result;
    }
private:
    int map(char c) {
        switch(c) {
        case 'I': return 1;
        case 'V': return 5;
        case 'X': return 10;
        case 'L': return 50;
        case 'C': return 100;
        case 'D': return 500;
        case 'M': return 1000;
        default: return 0;
        }
    }
};
